//
// Ravine (MP)
//

#include "stagesetup.h"

extern s32 intro[];
extern u32 props[];
extern struct path paths[];
extern struct ailist ailists[];

struct stagesetup setup = {
	NULL,
	NULL,
	NULL,
	intro,
	props,
	paths,
	ailists,
	NULL,
};

u32 props[] = {
	tag(0x00, 1)
	lift(0x0100, MODEL_RAVINELIFT, PAD_AREC_00BC, OBJFLAG_00000008 | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_IGNOREFLOORCOLOUR | OBJFLAG_INVINCIBLE | OBJFLAG_UNCOLLECTABLE | OBJFLAG_FORCENOBOUNCE | OBJFLAG_01000000 | OBJFLAG_CANNOT_ACTIVATE, OBJFLAG2_NOFALL | OBJFLAG2_FALLWITHOUTROTATION | OBJFLAG2_IMMUNETOGUNFIRE | OBJFLAG2_BULLETPROOF | OBJFLAG2_IMMUNETOEXPLOSIONS, 0, 1000, 0x00bc, 0x00bb, 0x00ba, -1, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000071c, 0x0010aaaa, 0x00000000)
	weapon(0x0200, MODEL_ROOFGUN, PAD_AREC_00BD, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION00)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00C7, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00C8, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0200, 0x0000, PAD_AREC_00BE, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION01)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00C9, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CA, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0200, 0x0000, PAD_AREC_00BF, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION02)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CB, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CC, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0133, 0x0000, PAD_AREC_00C0, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION03)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CD, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CE, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0133, 0x0000, PAD_AREC_00C1, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION04)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00CF, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D0, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0133, 0x0000, PAD_AREC_00C2, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION05)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D1, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D2, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0100, 0x0000, PAD_AREC_00C3, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION06)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D3, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D4, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0100, 0x0000, PAD_AREC_00C4, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION07)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D5, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D6, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0100, 0x0000, PAD_AREC_00C5, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION08)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D7, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D8, OBJFLAG_FALL, 0, 0, 1000)
	weapon(0x0100, 0x0000, PAD_AREC_00C6, OBJFLAG_FALL, 0, 0, WEAPON_MPLOCATION09)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00D9, OBJFLAG_FALL, 0, 0, 1000)
	ammocratemulti(0x0099, MODEL_MULTI_AMMO_CRATE, PAD_AREC_00DA, OBJFLAG_FALL, 0, 0, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DB, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DC, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DD, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DE, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00DF, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E0, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E1, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E2, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E3, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E4, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E5, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E6, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E7, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E8, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00E9, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EA, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EB, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EC, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00ED, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	stdobject(0x0100, MODEL_A51_CRATE2, PAD_AREC_00EE, OBJFLAG_FALL | OBJFLAG_XTOPADBOUNDS | OBJFLAG_YTOPADBOUNDS | OBJFLAG_ZTOPADBOUNDS | OBJFLAG_00000100 | OBJFLAG_INVINCIBLE, 0, OBJFLAG3_PUSHABLE, 1000)
	endprops
};

s32 intro[] = {
	spawn(PAD_AREC_00B0)
	spawn(PAD_AREC_00B1)
	spawn(PAD_AREC_00B2)
	spawn(PAD_AREC_00B3)
	spawn(PAD_AREC_00B4)
	spawn(PAD_AREC_00B5)
	spawn(PAD_AREC_00B6)
	spawn(PAD_AREC_00B7)
	spawn(PAD_AREC_00B8)
	spawn(PAD_AREC_00B9)
	hill(PAD_AREC_0066)
	hill(PAD_AREC_008D)
	hill(PAD_AREC_0071)
	hill(PAD_AREC_007C)
	hill(PAD_AREC_005C)
	case(0, PAD_AREC_009A)
	case_respawn(0, PAD_AREC_0094)
	case_respawn(0, PAD_AREC_0096)
	case_respawn(0, PAD_AREC_0097)
	case_respawn(0, PAD_AREC_0099)
	case_respawn(0, PAD_AREC_0098)
	case_respawn(0, PAD_AREC_0095)
	case(1, PAD_AREC_00A1)
	case_respawn(1, PAD_AREC_009B)
	case_respawn(1, PAD_AREC_009C)
	case_respawn(1, PAD_AREC_009D)
	case_respawn(1, PAD_AREC_009E)
	case_respawn(1, PAD_AREC_009F)
	case_respawn(1, PAD_AREC_00A0)
	case(2, PAD_AREC_00A8)
	case_respawn(2, PAD_AREC_00A2)
	case_respawn(2, PAD_AREC_00A3)
	case_respawn(2, PAD_AREC_00A4)
	case_respawn(2, PAD_AREC_00A5)
	case_respawn(2, PAD_AREC_00A6)
	case_respawn(2, PAD_AREC_00A7)
	case(3, PAD_AREC_00AF)
	case_respawn(3, PAD_AREC_00A9)
	case_respawn(3, PAD_AREC_00AA)
	case_respawn(3, PAD_AREC_00AB)
	case_respawn(3, PAD_AREC_00AC)
	case_respawn(3, PAD_AREC_00AD)
	case_respawn(3, PAD_AREC_00AE)
	endintro
};

struct path paths[] = {
	{ NULL, 0, 0 },
};

u8 func1001_start_lift[] = {
	activate_lift(1, 0x00)
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

u8 func1000_1b30[] = {
	mp_init_simulants
	rebuild_teams
	rebuild_squadrons
	set_ailist(CHR_SELF, GAILIST_IDLE)
	endlist
};

struct ailist ailists[] = {
	{ func1000_1b30,       0x1000 },
	{ func1001_start_lift, 0x1001 },
	{ NULL, 0 },
};
